সি++ স্ট্যান্ডার্ড লাইব্রেরিতে কনটেইনার অ্যাডাপ্টার হিসেবে তিনটি গুরুত্বপূর্ণ ক্লাস রয়েছে: std::stack
, std::queue
, এবং std::priority_queue
। এদেরকে কনটেইনার অ্যাডাপ্টার বলা হয় কারণ এরা মূল কনটেইনারের কার্যকারিতা (যেমন vector
, deque
, বা list
) ব্যবহার করে নতুন ধরনের অ্যাক্সেস নিয়ম তৈরি করে। এই কনটেইনার অ্যাডাপ্টারগুলো ডেটা অ্যাক্সেস করার ভিন্ন ধরণ প্রদান করে, যা বিভিন্ন প্রোগ্রামিং সমস্যা সমাধানে সহায়ক।
std::stack
std::stack
হলো একটি LIFO (Last In, First Out) ডেটা স্ট্রাকচার। এতে সর্বশেষ যোগ করা উপাদানটিই প্রথমে অপসারণ করা যায়। সাধারণত stack
কনটেইনার push
, pop
, top
ইত্যাদি অপারেশন সরবরাহ করে।
#include <iostream>
#include <stack>
int main() {
std::stack<int> stk;
stk.push(10);
stk.push(20);
stk.push(30);
while (!stk.empty()) {
std::cout << stk.top() << " "; // শীর্ষ উপাদান প্রদর্শন
stk.pop(); // শীর্ষ উপাদান সরিয়ে নেয়া
}
return 0;
}
std::queue
std::queue
হলো একটি FIFO (First In, First Out) ডেটা স্ট্রাকচার। এতে প্রথমে যোগ করা উপাদানটিই প্রথমে অপসারণ করা যায়। এটি সাধারণত push
, pop
, front
, এবং back
অপারেশন সরবরাহ করে।
#include <iostream>
#include <queue>
int main() {
std::queue<int> q;
q.push(10);
q.push(20);
q.push(30);
while (!q.empty()) {
std::cout << q.front() << " "; // প্রথম উপাদান প্রদর্শন
q.pop(); // প্রথম উপাদান সরিয়ে নেয়া
}
return 0;
}
std::priority_queue
std::priority_queue
হলো একটি বিশেষ ধরনের কিউ যেখানে উপাদানগুলোকে গুরুত্ব অনুযায়ী সাজানো হয়। সাধারণত সর্বোচ্চ (বা সর্বনিম্ন) মান সর্বপ্রথমে বের করা যায়। এটি ডিফল্টভাবে সর্বোচ্চ মানকে সর্বপ্রথমে প্রদর্শন করে। priority_queue
সাধারণত push
, pop
, এবং top
অপারেশন সরবরাহ করে।
#include <iostream>
#include <queue>
int main() {
std::priority_queue<int> pq;
pq.push(10);
pq.push(30);
pq.push(20);
while (!pq.empty()) {
std::cout << pq.top() << " "; // সর্বোচ্চ মান প্রদর্শন
pq.pop(); // সর্বোচ্চ মান সরিয়ে নেয়া
}
return 0;
}
নোট: উপরের উদাহরণে সর্বোচ্চ মান প্রথমে প্রিন্ট করা হয় কারণ std::priority_queue
ডিফল্টভাবে সর্বোচ্চ মানকে অগ্রাধিকার দেয়। তবে std::greater<int>
ব্যবহার করে এটি সর্বনিম্ন মানকে অগ্রাধিকার দিতেও কনফিগার করা যায়।
stack
, queue
, এবং priority_queue
বিভিন্ন সমস্যা সমাধানের জন্য সরল এবং কার্যকরী উপায়ে ডেটা অ্যাক্সেস ও পরিচালনা করতে সহায়ক।stack
LIFO অপারেশন, queue
FIFO অপারেশন, এবং priority_queue
ডেটা গুরুত্বপূর্ণতার ভিত্তিতে সাজানো রাখে।এগুলো বিভিন্ন ধরনের ডেটা অ্যাক্সেস প্যাটার্ন বাস্তবায়নের জন্য খুবই সহায়ক, যা প্রোগ্রামিংয়ের বিভিন্ন ক্ষেত্রে অত্যন্ত কার্যকর।
Read more